With the onset of technologization, software applications have replaced tedious human labour in almost all avenues. For example, applications are developed and implemented for carrying out monetary transactions, accounting, travel booking, hotel management, cab management, and a plethora of other such purposes.
Software applications are tested to ensure that the software performs the functions it is designed for. Software applications are tested for functionality, bugs, and glitches in order to determine whether the software applications meet required goals or not. According to the traditional approach followed for application development, functional requirements relating to the application to be developed are obtained. On the basis of the functional requirements, design and architecture of the application is engineered and the application developed.
Further, after the development of the application, the application is tested for functional defects. In order to test the functionality of a software application, functional testing requirements may be gathered. In one approach a functional testing requirement specification is prepared. The functional testing requirement specification is indicative of the properties for which the application needs to be tested. Based on the functional testing requirement specification, test cases may be designed and executed on the software application to verify its functionality. In case execution of the test cases reveal that the software application is not performing in an expected manner, the software application is reported to be malfunction and modified to correct the defects found.
Along with functional testing, the software application can also be tested for quality assurance after development, to achieve validation and reliability estimation of the software application. While the former involves testing the software applications for functionalities, the latter is performed for purposes of performance quality assurance and is generally referred to as performance testing. The process of testing a software application for performance is a trade-off between budget and time, and the required quality of performance of the software application. Unlike functional testing, a systematic and exhaustive performance testing may often be compromised considering the time and costs associated with performance testing.